iT邦幫忙

2025 iThome 鐵人賽

DAY 3
1
生成式 AI

AI 給我錢錢錢 ! AI 股神養成計劃系列 第 3

Day 3 : 不用爬蟲也能抓股票資料?API 範例教學

  • 分享至 

  • xImage
  •  

在前兩天,我們已經學會了 Node.js 基本環境建置NPM 套件安裝。接下來,讓我們來點更實際的應用:如何用 Node.js 直接取得股票資料。

許多人一開始想抓取股市資訊,可能會直覺使用「爬蟲」去爬網頁,但其實現在有許多免費的 API,可以讓我們更乾淨、快速地拿到資料,不需要擔心網站改版或是被封鎖。

今天我們就要用 API 的方式,帶大家寫一個小範例,來抓取股市即時或歷史資料。

為什麼用 API 比爬蟲更好?

  1. 資料結構穩定:API 通常以 JSON 格式回傳,資料格式清楚。

  2. 不用解析 HTML:免去複雜的 DOM selector 或 HTML 標籤。

  3. 合法性較高:爬蟲有時會觸碰網站使用規範,而官方 API 或第三方 API 是公開提供。

  4. 速度更快:回傳資料精簡,減少不必要的流量。

選擇 API 來源

這裡舉兩個常見的 API 來源,讀者可以依需求選用:

  • Alpha Vantage
    免費提供股票、外匯、加密貨幣的歷史與即時資料,每分鐘有 5 次免費請求。
    👉 官方網站

  • Yahoo Finance (非官方 API)
    透過社群整理的 API,可以抓取股價、公司資訊。

本篇教學我們先以 Yahoo Finance (非官方 API) 為例,示範如何在 Node.js 中使用。

第一步:申請 API Key

  1. 前往 Alpha Vantage 官網

  2. 輸入 Email,免費申請一組 API Key。

  3. 稍後會收到一組字串,例如:

https://ithelp.ithome.com.tw/upload/images/20250817/20169444vFxDtfjtl1.png

這就是我們等下要用的金鑰。

先假設為:

nginx
demo1234567890

第二步:安裝套件

我們要用 axios 來發送 HTTP 請求。

bash
npm install axios

第三步:撰寫程式碼

新建一個檔案 stock.js,並輸入以下程式碼:

js
const axios = require('axios');

// 把你的 API Key 放這裡
const API_KEY = 'demo1234567890';
const SYMBOL = 'TSLA'; // 這裡我們抓 Tesla 的股價

async function getStockData() {
  try {
    const url = `https://www.alphavantage.co/query?function=TIME_SERIES_INTRADAY&symbol=${SYMBOL}&interval=5min&apikey=${API_KEY}`;
    
    const response = await axios.get(url);
    const data = response.data;

    // 印出最新一筆股價
    const timeSeries = data['Time Series (5min)'];
    const latestTime = Object.keys(timeSeries)[0];
    const latestData = timeSeries[latestTime];

    console.log(`股票:${SYMBOL}`);
    console.log(`時間:${latestTime}`);
    console.log(`開盤價:${latestData['1. open']}`);
    console.log(`收盤價:${latestData['4. close']}`);
    console.log(`成交量:${latestData['5. volume']}`);
  } catch (error) {
    console.error('抓取失敗:', error.message);
  }
}

getStockData();

第四步:執行程式

bash
node stock.js

如果成功,你會看到類似這樣的輸出:
https://ithelp.ithome.com.tw/upload/images/20250817/20169444fKraooIpgf.png

但我的繁體中文目前顯示都還是亂碼😭

這部分我也還在嘗試解決,但不影響輸出

進一步延伸

  1. 換股票代號:把 SYMBOL = 'TSLA' 改成 AAPL (Apple)、GOOGL (Google) 就能抓不同公司。

  2. 換查詢模式:Alpha Vantage 支援 TIME_SERIES_DAILY、TIME_SERIES_WEEKLY 等不同區間。

  3. 整合前端:把資料丟到前端頁面,用圖表(例如 Chart.js 或 Recharts)視覺化。

結語

今天我們學會了:

  • 什麼是 API,為什麼比爬蟲更適合抓股票資料。

  • 如何申請 Alpha Vantage 的 API Key。

  • 用 Node.js + axios 抓取即時股價。

到這裡,已經能夠建立一個最簡單的「股票查詢工具」! 🚀
👉 明天(Day 4),我們將來探討各個股票,甚至是加密貨幣的一個必較,來看看對於窮大學生的我來說,哪個最容易上手!


上一篇
Day 2 : 股市數據哪裡找?3 個免費 API 讓你輕鬆入手
下一篇
Day 4 : 台股、美股、加密貨幣資料來源大比較:哪個最適合新手?
系列文
AI 給我錢錢錢 ! AI 股神養成計劃21
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言